/*  Copyright (s) 2019 深圳百问网科技有限公司
 *  All rights reserved
 * 
 * 文件名称：main.c
 * 摘要：
 *  
 * 修改历史     版本号       Author       修改内容
 *--------------------------------------------------
 * 2022.1.4      v01        百问科技      创建文件
 *--------------------------------------------------
*/
#include "main.h"
#include "driver_led.h"
#include "driver_systick.h"

uint32_t sys_clk = 0;
int main(void)
{   
    // 初始化HAL库函数必须要调用此函数
    HAL_Init();

	/*
	* 系统时钟即 AHB/APB 时钟配置
	* 当使用外部高速时钟 HSE（8MHz）配置系统时钟时，使用 PLL 前可以选择不分频或者二分频，我们要配置到最大72MHz的系统频率，此处当然不分频
	* 然后经过锁相环放大，放大倍数为 9，即 8*9=72MHz 是能配置的最大系统频率，F103 的最大系统频率为 72MHz，64MHz 显然是合法
	  的系统频率
	*/
    SystemClock_Config();
	
	// 调用库函数来检验自己的配置是否成功配置为系统频率 72MHz
	sys_clk = HAL_RCC_GetSysClockFreq();

	/*
	* 初始化滴答时钟
	* 通过改变传入参数改变滴答时钟的频率，即 SysTickDelay(1)的时长
	*/
	SysTickInit(CYCLE_1MS);
	
	// 初始化LED
	LedGpioInit();
	
    while(1)
    {
        // 通过延时一段时间让LED亮灭，实现LED闪烁，可以通过示波器打LED的引脚反转周期，精确看时间是否与设置的一致
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, ON);
		SysTickDelay(1000); // 延时CYCLE_1MS * 1000 = 1s
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, OFF);
		SysTickDelay(1000); // 延时CYCLE_1MS * 1000 = 1s
    }
}
